Laboratorio: Calcolatore di Percorsi di Dijkstra

Obiettivo 🎯

  • Compito: Trova il percorso ottimale da un server sorgente `S` a tutti gli altri server.
  • Output: Per ogni server `i`, devi calcolare:
    • Latenza Totale: Il costo minimo (percorso più breve) dal server `S` al server `i`.
    • Prossimo Salto: Il *primo server* su quel percorso più breve.
  • Esempio: Se il percorso migliore da `S` a `D` è `S -> A -> B -> D`, il **Prossimo Salto** è `A`.

La Rete 💾

Useremo un Elenco di Adiacenza per memorizzare la rete.
  • I server sono nodi.
  • Le connessioni sono archi bidirezionali.
  • La latenza è un peso positivo.
// Collegamenti: 0-1 (10ms), 0-2 (3ms)
adj = [
0:[(1, 10), (2, 3)],
1:[(0, 10)],
2:[(0, 3)],
...
]

Formato dell'Output ⚙️

Devi stampare `V` righe. Ogni riga `i` corrisponde al server `i`.

  • [latenza] [prossimo_salto]

    Per un nodo raggiungibile.

  • 0 -1

    Se il nodo è la sorgente `S` stessa.

  • -1 -1

    Se il nodo non è raggiungibile da `S`.